home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Dylan Related / Dylan FAQ 14Dec94 / Dylan-FAQ.txt < prev   
Encoding:
Text File  |  1994-12-13  |  18.6 KB  |  404 lines  |  [TEXT/ttxt]

  1. Dylan(tm) FAQ
  2. Apple Computer - December 14, 1994
  3.  
  4. This memo answers questions which are frequently asked about the Dylan 
  5. programming language, and its implementations. If you want to keep up with 
  6. Dylan news, consider joining the announce-dylan or info-dylan mailing lists, or 
  7. the comp.lang.dylan newsgroup, described below.
  8.  
  9. The latest version of this memo is available by anonymous ftp from 
  10. cambridge.apple.com:/pub/dylan/faq/ in a variety of formats, including 
  11. plain ASCII, RTF (Rich Text Format), and PostScript(tm). 
  12.  
  13. The topics covered in this FAQ are
  14.     [1] Online Sources of Dylan Information
  15.     [1-1] Where is Dylan information generally available?
  16.     [1-2] Where can I get a copy of the language specification?
  17.     [1-3] Are there any public mailing lists for discussing Dylan?
  18.     [1-4] Where else can I get information about Dylan?
  19.     [1-5] Where should I send comments on the Dylan language?
  20.     [1-6] What should I do if I want to implement Dylan?
  21.  
  22.     [2] General Questions About Dylan and Implementations
  23.     [2-1] What is Dylan?
  24.     [2-2] What is the target audience for Dylan?
  25.     [2-3] How does Dylan differ from previous OODLs?
  26.     [2-4] Does Apple have an implementation of Dylan?
  27.     [2-5] How can I get an early copy of Apple's Dylan implementation?
  28.     [2-6] What third-party implementations of Dylan are available?
  29.     [2-7] Is Dylan related to the Newton PDA?
  30.     [2-8] Is Dylan designed to be a replacement for Common Lisp?
  31.     [2-9] Is Dylan a proprietary language?  Why is the Dylan name     
  32.         trademarked?
  33.  
  34.     [3] Questions about the Dylan Language Design
  35.     [3-1] Is the Dylan language design frozen?
  36.     [3-2] What does the Dylan syntax look like?
  37.     [3-3] Will Dylan have a standard macro system with the algebraic syntax?
  38.     [3-4] Are there plans to specify a standard I/O package for Dylan?  What 
  39.         about threads?
  40.     [3-5] Why is 'make' allowed to return a previously allocated instance, or 
  41.         an object which is an indirect instance of the class passed to make?
  42.     [3-6] The Dylan '92 manual doesn't require implementations to optimize 
  43.         tail-recursion.  Was this an intentional omission, or an editorial
  44.         oversight?
  45.     [3-7] The Dylan '92 manual doesn't say much about modules.  Will this
  46.         be specified in the future?
  47.     [3-8] Can the 'method' special form be used to create closures?
  48.     [3-9] I don't understand how setter variables work.  Is 'setter' a special 
  49.         form?
  50.     [3-10] What kind of object is used to return multiple values?
  51.     [3-11] Is the specification of sealing complete?
  52.     [3-12] Will Dylan include 'eval'?
  53.     [3-13] Will Dylan include an application framework?
  54.     [3-14] Will Dylan interface to other languages?
  55.  
  56.  
  57. [1] Online Sources of Dylan Information
  58.  
  59. [1-1] Where is Dylan information generally available?
  60.  
  61. On the Internet, the Apple Dylan WWW (World-Wide Web) site is 
  62. http://www.cambridge.apple.com. The Apple Dylan ftp site is 
  63. cambridge.apple.com:/pub/dylan/.
  64.  
  65. The Dylan WWW  page at Carnegie Mellon University is
  66. http://legend.gwydion.cs.cmu.edu:8001/dylan/
  67.  
  68. The Dylan newsgroup is comp.lang.dylan.
  69.  
  70. On Applelink, Dylan files are regularly uploaded to this area:
  71. Developer Support:Developer Services:
  72.    Development Platforms:Dylan Related
  73.  
  74. On eWorld, Go (cmd-G) to "dev service", then click on
  75.     Tool Chest:Development Platforms:Dylan Related
  76.  
  77. On CompuServe, Type GO APPLE to get to the Apple support forum.
  78. There are 16 libraries, go into Programmers/Developers Library #15
  79.  
  80. [1-2] Where can I get a copy of the language specification?
  81.  
  82. The first book on the Dylan language was published in 1992.  Since then, the 
  83. language has undergone a great deal of change in response to feedback from 
  84. potential users and implementors.  Throughout this process, changes to the 
  85. language design have been published electronically in the form of design notes.  
  86. The current round of language design is now essentially complete except for the 
  87. macro system.
  88.  
  89. The new Dylan language specification will be published in mid-1995. Electronic 
  90. drafts will be made available in advance of final printed publication. This will be 
  91. the definitive specification of the Dylan language.  Apple is working closely with 
  92. other Dylan implementors to ensure that this book is not Apple-specific, but 
  93. rather, applies equally to all Dylan implementations.
  94.  
  95. Of course, we realize that many people want to read about Dylan now!  So to fill 
  96. the gap until the new book is published, an interim Dylan reference book is 
  97. available by anonymous ftp, in the directory /pub/dylan/dylan-manual/, as 
  98. well as in the other file areas listed in topic [1-1] above. It is available in both RTF 
  99. (Rich Text Format) and PostScript formats (214 pages). The interim book is a 
  100. combination of the original Dylan book, the previously published design notes, 
  101. and additional previously unpublished design decisions. The document is called 
  102. "interim" not because the language design is unfinished, but because this is a 
  103. very rough document intended for use until the new book is ready. 
  104.  
  105. [1-3] Are there any public mailing lists for discussing Dylan?
  106.  
  107. Yes. The info-dylan mailing list is a forum for discussing all subjects related to 
  108. Dylan.  Each day's messages are gathered into a digest and sent as a single 
  109. compound message to the list info-dylan-digest.  The mailing list is also 
  110. linked to the Newsgroup comp.lang.dylan.
  111.  
  112. The announce-dylan mailing list is a moderated list, for major announcements 
  113. about Dylan (such as the availability of new implementations of the language).  
  114. All messages sent to announce-dylan are also sent to info-dylan.
  115.  
  116. To subscribe to info-dylan or announce-dylan, send mail to 
  117. majordomo@cambridge.apple.com.  The body of the message should be 
  118. "subscribe <list-name>", where <list-name> is the name of the mailing list 
  119. you want to subscribe to.  To unsubscribe to one of the mailing lists, send 
  120. majordomo a message with the body "unsubscribe <list-name>".  If you 
  121. would like to subscribe or unsubscribe an address which is different from the 
  122. return address of the message, include the address after the <list-name>.  For 
  123. complete majordomo instructions, send a message with the body "help".
  124.  
  125. The name of the digest form of info-dylan is info-dylan-digest.
  126.  
  127. Please do not send administrative requests to the mailing lists!  If you have 
  128. trouble with info-dylan, send mail to sysadmin@cambridge.apple.com.
  129.  
  130. [1-4] Where else can I get information about Dylan?
  131.  
  132. The Gwydion Project at Carnegie Mellon University maintains a World Wide 
  133. Web (WWW) page of general information on Dylan.  This is accessible using 
  134. Mosaic or other web-browsing software.  This page contains the Interim 
  135. Reference Manual as well as the original Dylan book in on-line form, annotated 
  136. with links to the design notes and changes that have been approved. This web 
  137. page also contains the current FAQ from Apple and other general information of 
  138. interest to the Dylan community.
  139.  
  140. The URL is "http://legend.gwydion.cs.cmu.edu:8001/dylan/".
  141.  
  142. The Gwydion Project also intends to maintain an FTP-accessible on-line 
  143. repository of Dylan libraries and code that the authors wish to share with the rest 
  144. of the community.  When this is in operation, it will be announced on the Dylan 
  145. mailing lists and will be pointed to from the Dylan WWW page mentioned 
  146. above.
  147.  
  148. [1-5] Where should I send comments on the Dylan language?
  149.  
  150. Most comments can be sent to info-dylan.  If you wish to send a private letter 
  151. to the Apple engineers working on Dylan, you can send a message to dylan-
  152. comments@cambridge.apple.com. (AppleLink users can send mail to DYLAN).
  153.  
  154. [1-6] What should I do if I want to implement Dylan?
  155.  
  156. Send mail to dylan-comments@cambridge.apple.com.  We have put together 
  157. a program to support implementors, and we want to hear from you.  (AppleLink 
  158. users can send mail to DYLAN).
  159.  
  160. If you've written an implementation of Dylan and want to release it, please 
  161. contact us for a trademark license.
  162.  
  163. [2] General Questions About Dylan and Implementations
  164.  
  165. [2-1] What is Dylan?
  166.  
  167. Dylan is a new Object Oriented Dynamic Language (OODL).  Dylan combines 
  168. the features of static and dynamic languages.  The goal of the language is to 
  169. support a high level of programmer productivity, while still allowing the 
  170. efficient delivery of applications and libraries.
  171.  
  172. Dylan is consistently object-oriented.  It is not based on a particular previously-
  173. existing procedural language with some kind of object-oriented extension.
  174.  
  175. [2-2] What is the target audience for Dylan?
  176.  
  177. The target audience for Dylan is developers of commercial application software, 
  178. most of whom are currently using static languages such as C and C++.   We 
  179. expect Dylan will appeal to many other groups of programmers as well, such as 
  180. educational users who want a very clean object-oriented language design, or in-
  181. house developers who need a high-level, very productive language.
  182.  
  183. [2-3] How does Dylan differ from previous OODLs?
  184.  
  185. Dylan is designed to allow the powerful and flexible programming techniques 
  186. and development environments associated with OODLs, while also allowing the 
  187. small, fast delivered applications currently associated with static languages.
  188.  
  189. Unlike many dynamic languages, Dylan's design consciously enables the 
  190. runtime environment to execute without the development environment present. 
  191. In addition, Dylan will let you selectively 'turn-off' dynamic capabilities when 
  192. they are no longer needed, allowing more efficient compilation.
  193.  
  194. [2-4] Does Apple have an implementation of Dylan?
  195.  
  196. Apple recently announced plans to release an implementation of Dylan.
  197.  
  198. The following description of Apple's implementation comes from a data sheet 
  199. distributed by Apple (in ftp://cambridge.apple.com/pub/dylan/brochure)
  200.  
  201. The Apple Dylan development environment is designed to let you create 
  202. complex, commercial-quality projects with all the advantages of a rapid-
  203. prototyping environment. 
  204.  
  205. Your project is stored in a database, unlike traditional, file-based systems. 
  206. Apple Dylan's customizable browsers will give you a powerful new way 
  207. to look at and manipulate your application as it executes.  You can browse 
  208. class hierarchies graphically, find all references to a given routine or 
  209. variable, and inspect objects in your program while it's running.
  210.  
  211. With Apple Dylan's incremental compiler, you will be able to actually 
  212. change code in a running program and see the results right away.  No 
  213. more waiting for a long edit, compile, link, execute, debug cycle.  This 
  214. gives you freedom as a programmer to explore various options and 
  215. rapidly improve your product.
  216.  
  217. Apple Dylan will include:
  218. * Dylan compiler and runtime
  219. * Integrated development environment featuring incremental 
  220. development and advanced configurable browsing and viewing of 
  221. code
  222. * Dylan application framework
  223. * Dylan user-interface builder 
  224. * Cross-language support allowing seamless access to existing C and 
  225. C++ code and APIs
  226.  
  227. The first release of Apple Dylan is scheduled to ship in mid-1995.  This release 
  228. will support native 68K stand alone applications.
  229.  
  230. Six to nine months after the first release, Apple will release a version of Dylan 
  231. which supports native PowerPC code and OpenDoc parts (components).
  232.  
  233. [2-5] How can I apply to be an early seed site for Apple's Dylan 
  234. implementation?
  235.  
  236. Send a message to the AppleLink address DYLAN, or the Internet address 
  237. dylan@applelink.apple.com.  The message should include your name, 
  238. address, phone number, and a brief description of how you plan on using Apple 
  239. Dylan.
  240.  
  241. [2-6] What third-party implementations of Dylan are available?
  242.  
  243. Several third-parties have expressed interest in implementing Dylan.
  244.  
  245. [a] Marlais is an experimental interpreter written in C. It was created by Brent 
  246. Benson, and is being extended by Joe Wilson, Patrick Beard, and others. Marlais 
  247. 0.5.4 is available in the Dylan ftp directory at cambridge.apple.com. It 
  248. supports the official algebraic syntax, as well as the older lisp-like syntax.
  249.  
  250. Marlais 0.5.4 runs on a variety of unix platforms, as well as Macintosh and 
  251. Windows.
  252.  
  253. [b] Harlequin is currently investing in a commercial implementation of Dylan. 
  254. They are building a PC based Windows 95/NT hosted version of the language. 
  255. For more information, contact Mike Smith (mikes@harlequin.com), group 
  256. manager of Harlequin's Dylan project.
  257.  
  258. [c] The Gwydion Project at Carnegie Mellon University is building an innovative 
  259. new software development and maintenance environment around the Dylan 
  260. language.  A part of this work will involve the development of a high-
  261. performance Dylan implementation that will produce code for many platforms.
  262.  
  263. For more information on this project, see the Gwydion project's World Wide Web 
  264. page: "http://legend.gwydion.cs.cmu.edu:8001/gwydion/".
  265.  
  266. [d] As a development tool, the Gwydion project has produced a byte-coded 
  267. Dylan implementation called "Mindy". Though it is not very fast, does not have 
  268. an extensive environment, and time spent on maintaining it will be limited, 
  269. Mindy may be of some value to people who want to play with Dylan code and 
  270. get a feel for the language. Mindy is documented on the Gwydion web page (see 
  271. above), and is available by anonymous ftp from legend.gwydion.cs.cmu.edu 
  272. in the file:
  273.     /afs/cs.cmu.edu/project/gwydion/release/mindy.tar.gz
  274. Due to CMU security measures, if you use the ftp 'cd' command, then you must 
  275. 'cd' to the release directory in one cd command line; for example, do not try to 
  276. 'cd' to "/afs/cs/project/gwydion/".
  277.  
  278. [e] Thomas 1.1 is an experimental interpreter written in Scheme. It was created 
  279. by Matt Birkholz, Jim Miller, and Ron Weiss at the DEC Cambridge Research Lab 
  280. in 1992. It supports the older lisp-like syntax, and does not incorporate many of 
  281. the more recent language changes. Thomas is available at the Dylan ftp site at 
  282. cambridge.apple.com.
  283.  
  284. [2-7] Is Dylan related to the Newton PDA?
  285.  
  286. Not at this time. If you are looking for more information on Newton 
  287. development, you need to contact the Newton Developer Relations at 
  288. NEWTON.DEVS@applelink.apple.com.
  289.  
  290. [2-8] Is Dylan designed to be a replacement for Common Lisp?
  291.  
  292. No.  We see Common Lisp and Dylan filling two distinct needs.
  293.  
  294. [2-9] Is Dylan a proprietary language? Why is the Dylan name trademarked?
  295.  
  296. We want Dylan to be available on as many computers as possible.  To this end, 
  297. we are encouraging groups outside Apple to implement Dylan.
  298.  
  299. It is our intention to license the Dylan trademark to any implementation which 
  300. passes a standard test suite.  The purpose of the trademark is to ensure quality 
  301. and consistency among implementations.
  302.  
  303. [3] Questions About the Dylan Language Design
  304.  
  305. [3-1] Is the Dylan language design frozen?
  306.  
  307. With the exception of the macro system, the current language design is complete.  
  308. At this time, we will only be making small tweaks, or changes necessary to 
  309. resolve bugs or inconsistencies in the specification.
  310.  
  311. [3-2] What does the Dylan syntax look like?
  312.  
  313. The first Dylan book published in 1992 used a parenthesized, lisp-like syntax.  
  314. The current language definition uses an algebraic syntax, which will be very 
  315. familiar to users of Pascal or C.
  316.  
  317. [3-3] Will Dylan have a standard macro system with the algebraic syntax?
  318.  
  319. Yes. This will be based on substitution at the parse level (like Lisp) rather than 
  320. text substituion (like C). A description will be included in the next version of the 
  321. Dylan language reference manual.
  322.  
  323. [3-4] Are there plans to specify a standard I/O package for Dylan?  What about 
  324. threads?
  325.  
  326. Threads, I/O, and other language features may be provided as optional libraries 
  327. in the future.  They are not currently part of the language. Because of the great 
  328. variety of computing platforms—from PDA to mainframe—we do not want to 
  329. standardize on these features too strictly.
  330.  
  331. [3-5] Why is 'make' allowed to return a previously allocated instance, or an 
  332. object which is an indirect instance of the class passed to make?
  333.  
  334. We feel that this is a very important abstraction mechanism.  A class should have 
  335. flexibility in how it implements make, as long as the object returned fulfills the 
  336. protocol of the class.
  337.  
  338. For example, this allows a library to document a single abstract class which is 
  339. supported by several undocumented implementation classes. The abstract class 
  340. can choose which implementation class to instantiate based on the additional 
  341. arguments to make.  This allows optimizations which are transparent to the 
  342. clients of the library.
  343.  
  344. The default method for make of a user-defined class returns a fresh direct 
  345. instance of the requested class.
  346.  
  347. [3-6] The Dylan '92 manual doesn't require implementations to optimize tail-
  348. recursion. Was this an intentional omission, or an editorial oversight?
  349.  
  350. It was an editorial oversight.  Dylan implementations are required to be properly 
  351. tail recursive.
  352.  
  353. [3-7] The Dylan '92 manual doesn't say much about modules.  Will this be 
  354. specified in the future?
  355.  
  356. The new language document includes a complete module specification.
  357.  
  358. [3-8] Can the 'method' special form be used to create closures?
  359.  
  360. Yes.
  361.  
  362. [3-9] I don't understand how setter variables work.  Is 'setter' a special form?
  363.  
  364. This has been clarified in the new language design.  The new design is included 
  365. in the interim Dylan reference book.
  366.  
  367. [3-10] What kind of object is used to return multiple values?
  368.  
  369. When a function returns multiple values, the return values are not stored in a 
  370. wrapper object;  they are returned directly.  For example, if a function returns 
  371. "the values 4 and 5", it returns two integers.  It does not return a data structure 
  372. which contains two integers.
  373.  
  374. Returning multiple values is similar to calling a function with more than one 
  375. argument.  When passing multiple objects as arguments to a function, the objects 
  376. do not have to be stored in a single data structure before they are passed.
  377.  
  378. [3-11] Is the specification of sealing complete?
  379.  
  380. Yes.  The new language design includes a complete specification of sealing.  This 
  381. design is included in the interim Dylan reference book.
  382.  
  383. [3-12] Will Dylan include 'eval'?
  384.  
  385. Some implementations may choose to support eval, but we do not have plans to 
  386. add it to the language standard.  We feel that the delivery of applications which 
  387. are space efficient requires the separation of development time activity from 
  388. runtime activity.
  389.  
  390. [3-13] Will Dylan include an application framework?
  391.  
  392. We recognize the value of application frameworks, especially cross-platform 
  393. application frameworks.  Unfortunately, because of the great variation in 
  394. computing platforms, a single application framework will not be part of the 
  395. Dylan language.  On each platform, there should either be a Dylan-specific 
  396. application framework, or Dylan should be able to use application frameworks 
  397. written in other languages.
  398.  
  399. [3-14] Will Dylan interface to other languages?
  400.  
  401. We recognize that seamless integration with other languages, especially C and 
  402. C++, is essential.  We are working on addressing this issue.  The solutions may 
  403. not be part of the Dylan language proper.
  404.